home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / copperfun.lha / waves2.s < prev   
Encoding:
Text File  |  1992-12-31  |  4.6 KB  |  156 lines

  1. ***********************************************************
  2. * This little program shows how to use the BPLCON1 register
  3. * to produce a neat "wavy" effect.
  4. * 1992 Epsilon
  5. ***********************************************************
  6.  
  7. WaitVblank    MACRO
  8. .\@        move.l    4(a5),d0
  9.         andi.l    #$3ff00,d0
  10.         cmpi.l    #$0f400,d0
  11.         bne.b    .\@
  12.         ENDM
  13.  
  14. ***********************************************************
  15.  
  16.         bsr.w    TakeSystem
  17. MouseWait:    WaitVblank
  18.  
  19.         bsr.b    Waves
  20.  
  21.         btst    #6,$bfe001
  22.         bne.s    MouseWait
  23.  
  24.         bsr.w    RestoreSystem
  25.         rts                ; Done!
  26.  
  27. ***********************************************************    
  28.  
  29. Waves:        lea    list+6,a0        ; addr. of copper list in a0
  30.         lea    sine_wave,a1        ; sine_wave table +
  31.         add.l    wave_offset,a1        ;   offset in a1
  32.         moveq    #14,d0            ; loop counter
  33. wave_top:    move.w    (a1)+,(a0)+        ; move new scroll value
  34.         addq.l    #6,a0            ; next spot in copper
  35.         dbra    d0,wave_top        ; loop
  36.  
  37.         addq.l    #2,wave_offset        ; next position in sine table
  38.         cmpi.l    #16,wave_offset        ; end of list?
  39.         bne.s    no_w
  40.         clr.l    wave_offset        ; set back to start of list
  41. no_w:        rts
  42.  
  43. ***********************************************************    
  44.  
  45. TakeSystem:    move.l    #$dff000,a5        ; Custom chip base
  46.  
  47.         bsr.w    InstallBmap
  48.         bsr.w    InstallSprites
  49.         move.l    #Copper,$80(a5)        ; install copper
  50.         rts                ; Done
  51.  
  52. ***********************************************************
  53.  
  54. RestoreSystem:    move.l    #$dff000,a5        ; Custom chip base
  55.  
  56.         movea.l    4.w,a6            ; ExecBase
  57.         lea    GraphicsName,a1        ; "graphics.library"
  58.         jsr    -$198(a6)        ; OldOpenLibrary()
  59.         move.l    d0,a1            ; Copy ptr to GfxBase
  60.         move.l    $26(a1),$80(a5)        ; Install old system copperlist
  61.         jsr    -$19e(a6)        ; CloseLibrary()
  62.         jsr    -$8a(a6)        ; Permit() multitasking
  63.         rts                ; Done
  64.  
  65. ***********************************************************    
  66.  
  67. InstallBmap:    lea    bmapptrs+2,a0
  68.         move.l    #Bmap,d0    ; say our bmap address is $12345678
  69.         move.w    d0,4(a0)    ;   write $5678 to $e2 reg in clist
  70.         swap    d0
  71.         move.w    d0,(a0)        ;   write $1234 to $e0
  72.         rts
  73.  
  74. ***********************************************************    
  75.  
  76. InstallSprites:    lea    sprptrs+2,a0
  77.         move.l    #NullSprite,d0
  78.         move.w    d0,4(a0)
  79.         move.w    d0,12(a0)
  80.         move.w    d0,20(a0)
  81.         move.w    d0,28(a0)
  82.         move.w    d0,36(a0)
  83.         move.w    d0,44(a0)
  84.         move.w    d0,52(a0)
  85.         move.w    d0,60(a0)
  86.         swap    d0
  87.         move.w    d0,(a0)    
  88.         move.w    d0,8(a0)
  89.         move.w    d0,16(a0)
  90.         move.w    d0,24(a0)
  91.         move.w    d0,32(a0)
  92.         move.w    d0,40(a0)
  93.         move.w    d0,48(a0)
  94.         move.w    d0,56(a0)
  95.         rts
  96.  
  97. ***********************************************************
  98.  
  99.         section amazin_fruit,data
  100.  
  101. GraphicsName:    dc.b    'graphics.library',0
  102.         EVEN
  103.  
  104. sine_wave:    dc.w    $0000,$0011,$0022,$0033,$0022,$0011,$0000
  105.         dc.w    $0000,$0011,$0022,$0033,$0022,$0011,$0000
  106.         dc.w    $0000,$0011,$0022,$0033,$0022,$0011,$0000
  107.         dc.w    $0000,$0011,$0022,$0033,$0022,$0011,$0000
  108.         dc.w    $0000,$0011,$0022,$0033,$0022,$0011,$0000
  109.  
  110. Wave_Ptr:    dc.l    sine_wave        ; address of wave table
  111. wave_offset:    dc.l    0
  112.     
  113. ***********************************************************
  114.  
  115.         section    squid,data_c
  116.  
  117. Copper:    dc.w    $0100,$1200        ; bit plane control reg.0
  118.     dc.w    $0102,$0000        ; scroll value
  119.     dc.w    $0104,$0000        ; blp/sprite priority reg.
  120.     dc.w    $0108,$0000        ; odd bitplane modulo value
  121.     dc.w    $010a,$0000        ; even bitplane modulo value
  122.     dc.w    $0180,$0000        ; color00 = black
  123.     dc.w    $0182,$0fff        ; color01 = white
  124.     dc.w    $008e,$2c81        ; upper left corner of disp. window
  125.     dc.w    $0090,$f4c1        ; lower right corner of disp. window
  126.     dc.w    $0092,$0038        ; start of bpl. (horizontal)
  127.     dc.w    $0094,$00d0        ; endo of bpl. (horizontal)
  128. bmapptrs:dc.w    $00e0,$0000        ; adr of bplane 1 (long - 2 words)
  129.     dc.w    $00e2,$0000        ; low word of bplane 1 adr
  130. sprptrs:dc.w    $0120,$0000,$0122,$0000,$0124,$0000,$0126,$0000
  131.     dc.w    $0128,$0000,$012a,$0000,$012c,$0000,$012e,$0000
  132.     dc.w    $0130,$0000,$0132,$0000,$0134,$0000,$0136,$0000
  133.     dc.w    $0138,$0000,$013a,$0000,$013c,$0000,$013e,$0000
  134.  
  135.     dc.w    $500f,$fffe
  136. list:    dc.w    $510f,$fffe,$0102,$0000        ; odd bitplane modulo value
  137.     dc.w    $520f,$fffe,$0102,$0000        ; odd bitplane modulo value
  138.     dc.w    $530f,$fffe,$0102,$0000        ; odd bitplane modulo value
  139.     dc.w    $540f,$fffe,$0102,$0000        ; odd bitplane modulo value
  140.     dc.w    $550f,$fffe,$0102,$0000        ; odd bitplane modulo value
  141.     dc.w    $560f,$fffe,$0102,$0000        ; odd bitplane modulo value
  142.     dc.w    $570f,$fffe,$0102,$0000        ; odd bitplane modulo value
  143.     dc.w    $580f,$fffe,$0102,$0000        ; odd bitplane modulo value
  144.     dc.w    $590f,$fffe,$0102,$0000        ; odd bitplane modulo value
  145.     dc.w    $5a0f,$fffe,$0102,$0000        ; odd bitplane modulo value
  146.     dc.w    $5b0f,$fffe,$0102,$0000        ; odd bitplane modulo value
  147.     dc.w    $5c0f,$fffe,$0102,$0000        ; odd bitplane modulo value
  148.     dc.w    $5d0f,$fffe,$0102,$0000        ; odd bitplane modulo value
  149.     dc.w    $5e0f,$fffe,$0102,$0000        ; odd bitplane modulo value
  150.     dc.w    $810f,$fffe,$0182,$0000
  151.     dc.l    -2,-2
  152.  
  153. NullSprite:    dc.l    0,0,0    ; 2 controll words,2 data words,2 blank word
  154.  
  155. Bmap:    incbin    "fun.raw"
  156.